/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo;

import java.io.Serializable;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.util.ArrayList;
import javax.faces.model.SelectItem;

/**
 *
 * @author 
 */
public class Cliente implements Serializable{
    private String id_cliente;
    private String ape_nombre;
    private String direccion;
    private String dni;
    private String emp_nombre;
    private String ruc;
    private String telefono;

    public String getApe_nombre() {
        return ape_nombre;
    }

    public void setApe_nombre(String ape_nombre) {
        this.ape_nombre = ape_nombre;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public String getEmp_nombre() {
        return emp_nombre;
    }

    public void setEmp_nombre(String emp_nombre) {
        this.emp_nombre = emp_nombre;
    }

    public String getId_cliente() {
        return id_cliente;
    }

    public void setId_cliente(String id_cliente) {
        this.id_cliente = id_cliente;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }
    
     public static boolean agregarCliente(Cliente obj_a){
       boolean a=false;
      Connection conexion = null;
      try {
          conexion= ControladorBD.darConexionBD();
          CallableStatement st;
          st=conexion.prepareCall("{call  sp_Registrar_Cliente(?,?,?,?,?,?,?)}");
          conexion.setAutoCommit(false);
          
          if(obj_a.getApe_nombre() != null){
              if(obj_a.getApe_nombre().length()>0){
                st.setString(1,obj_a.getApe_nombre());
              }
              else{
                st.setString(1,null);
              } 
          }
          else{
              st.setString(1,null);
          }
           if(obj_a.getDireccion() != null){
              if(obj_a.getDireccion().length()>0){
                st.setString(2,obj_a.getDireccion());
              }
              else{
                st.setString(2,null);
              } 
          }
          else{
              st.setString(2,null);
          }
           
           if(obj_a.getDni() != null){
              if(obj_a.getDni().length()>0){
                st.setString(3,obj_a.getDni());
              }
              else{
                st.setString(3,null);
              } 
          }
          else{
              st.setString(3,null);
          } 
          
          if(obj_a.getEmp_nombre() != null){
              if(obj_a.getEmp_nombre().length()>0){
                st.setString(4,obj_a.getEmp_nombre());
              }
              else{
                st.setString(4,null);
              } 
          }
          else{
              st.setString(4,null);
          }
           if(obj_a.getRuc() != null){
              if(obj_a.getRuc().length()>0){
                st.setString(5,obj_a.getRuc());
              }
              else{
                st.setString(5,null);
              } 
          }
          else{
              st.setString(5,null);
          }
          
            if(obj_a.getTelefono()!= null){
              if(obj_a.getTelefono().length()>0){
                st.setString(6,obj_a.getTelefono());
              }
              else{
                st.setString(6,null);
              } 
          }
          else{
              st.setString(6,null);
          }
     
          st.registerOutParameter(7, java.sql.Types.VARCHAR); //intentar extraer el parametro de salida y darselo al codigo
          st.execute();
          if(st.getString(7)!=null){
              a=true;
          }
          st.close();
          conexion.setAutoCommit(true);
          conexion.close();
     }catch(Exception error){
          System.out.println("Error en agregarCliente:"+error.getMessage());
          error.printStackTrace();
    }
      return a;
    
}
     public static ArrayList<Cliente>getCargarCliente(){
        ArrayList<Cliente> arreglo=null;
        Cliente obj = null;
        Connection conexion = null;
        ResultSet rs= null;

        try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall("{call sp_Listar_Cliente()}");
            rs=st.executeQuery();
            //st(1,estado);
            if(rs.next()){
                arreglo=new ArrayList<Cliente>();
                do{
                    obj=new Cliente();
                    obj.setId_cliente(rs.getString("id_cliente"));
                    obj.setApe_nombre(rs.getString("ape_nombre"));
                    obj.setDireccion(rs.getString("direccion"));
                    obj.setDni(rs.getString("dni"));
                    obj.setEmp_nombre(rs.getString("emp_nombre"));
                    obj.setRuc(rs.getString("ruc"));
                    obj.setTelefono(rs.getString("telefono"));
                    arreglo.add(obj);
                }while(rs.next());
            }
        }catch(Exception error) {
            System.out.println("Error en Listado: " + error.getMessage());
            error.getMessage();
        }
        return arreglo;
    
    }
     
    public ArrayList<SelectItem>   getCargarComboCliente(){         
            ArrayList<SelectItem> arrayCliente = new ArrayList<SelectItem>();
            Cliente obj=null;
            Connection conexion = null;
            ResultSet rs = null;
            try{
            conexion = ControladorBD.darConexionBD();
            CallableStatement st = conexion.prepareCall( "{call sp_Listar_Cliente()}");    
            rs = st.executeQuery();        
            if (rs.next()){    
                    do{
                        arrayCliente.add(new SelectItem(rs.getString("id_cliente"), 
                                                        rs.getString("ape_nombre")));   
                    } while (rs.next());

                }  
                rs.close();
                st.close();
                conexion.close();

            }catch(Exception error){
                System.out.println("Error en el metodo por: " +
                        error.getMessage());
                        error.printStackTrace();
            }    

            return arrayCliente;
    } 


}

    
